package br.com.projetovendas.persistencia;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.projetovendas.beans.Produto;
import br.com.projetovendas.util.HibernateUtil;

public class ProdutoDAOImp implements ProdutoDAO {
	private Session session = null;
	private Transaction transaction = null;
	
	@Override
	public boolean insereProduto(Produto produto) {
		boolean retorno = false;
		try {
			session = HibernateUtil.getSessionfactory().openSession();
			transaction = session.beginTransaction();
			System.out.print("DAO-Email: " + produto.getNomeProduto());
			session.persist(produto);
			transaction.commit();
			retorno=true;
		} catch (HibernateException e) {
			transaction.rollback();
			e.printStackTrace();
		}finally{
			session.close();
		}
		return retorno;
	}
	@Override
	public boolean alteraProduto(Produto produto) {
		boolean retorno = false;
		try {
			session = HibernateUtil.getSessionfactory().openSession();
			transaction = session.beginTransaction();
			session.update(produto);
			transaction.commit();
			retorno=true;
		} catch (HibernateException e) {
			transaction.rollback();
			e.printStackTrace();
		}finally{
			session.close();
		}
		return retorno;
	}

	@Override
	public boolean excluiProduto(Produto produto){
		boolean retorno = false;
		try {
			session = HibernateUtil.getSessionfactory().openSession();
			transaction = session.beginTransaction();
			session.delete(session.get(Produto.class,produto.getId()));
			transaction.commit();
			retorno=true;
		} catch (HibernateException e) {
			transaction.rollback();
			e.printStackTrace();
		}finally{
			session.close();
		}
		return retorno;
	}

	@Override
	public Produto procurarProduto(Produto produto) {
		Produto p =null;
		try {
			session = HibernateUtil.getSessionfactory().openSession();
			p=(Produto) session.get(Produto.class,produto.getId());
		} catch (HibernateException e) {
			e.printStackTrace();
		}finally{
			session.close();
		}
		return p;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Produto> procurarTodosProduto() {
		List<Produto> list = null;
		try {
			session = HibernateUtil.getSessionfactory().openSession();
			list = session.createQuery("select p from Produto p").list();
		} catch (HibernateException e) {
			e.printStackTrace();
		}finally{
			session.close();
		}
		return list;
	}
}
